<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /*
        js
        数据类型和变量
        运算符
        流程控制
        函数
        对象
            1.数据
                （1）数组的创建方式
                （2）数组的API
        */
        //数组的创建
        // var arr=new Array()
        var arr = new Array(5)
        var arr1 = new Array(1, 2, 3)
        console.log(arr1)
        console.log(arr1.length)
        console.log(arr)
        console.log(arr.length)
        //向数据中添加数据
        arr[0] = "zhangsan"
        arr[1] = 10
        arr[9] = true  //超出的元素会自动扩容
        arr.length = 20
        console.log(arr)
        console.log(arr.length)

        var fruits = ["apple", 'orange', 'banana']
        var fruits1 = ["荔枝",'橘子', '桃子', '榴莲']
        var fruitsAll = fruits.concat(fruits1)  //将俩数组合并了，concat就是合并数组的方法，并没有改变原来数组的值
        console.log(fruitsAll)
        var res = fruitsAll.pop()  //pop()移除并返回最后一个元素
        console.log(fruitsAll)
        var int = fruitsAll.push("橘子")  //push从尾端增加一个元素并返回长度
        console.log(fruitsAll)
        var index1=fruitsAll.indexOf("橘子")  //indexOf()查找元素并返回下标
        var index2=fruitsAll.lastIndexOf('橘子')  //lastIndexOf()查找最后一个与传入实参相符的元素并返回下标
        console.log(index1)
        console.log(index2)
        fruitsAll.reverse()  //reverse反转字符串
        console.log(fruitsAll)
        console.log(fruitsAll.join("|"))  //join()转换为字符串
        console.log(fruitsAll.slice(2,4))  //slice()截取数据

        fruitsAll.splice(2,0,'el1','el2')  //删除或增加数据
        fruitsAll.splice(2,2)
        /*发现神奇的事情，console.log就算在修改数组语句的前面也是打印的修改后的数组，查了查
        console.log对于六种基本类型是直接输出，对于引用类型是打印引用的快照，且当有多层时，不会展开多层，而是保存第二层的引用，当你点击展开时才去读取内容*/
    </script>

</head>

<body>

</body>

</html>